#ifndef __GAME_MODEL_IOBJECT_HPP__
#define __GAME_MODEL_IOBJECT_HPP__

#include "game_model\ih\game_model_ilocation.hpp"
#include "game_model\ih\game_model_isize.hpp"
#include "game_model\ih\game_model_object_type.hpp"

#include <QtCore\qstring.h>
#include <QtGui\qimage.h>

namespace GameModel {

	struct IObjectVisitor;

struct IObject
{

	typedef std::shared_ptr< IObject > Ptr;

public:

	virtual ILocation const& getCurrentLocation() const = 0;

	virtual ISize const& getSize() const = 0;

	virtual QImage* getImage() const = 0;

	virtual ObjectType::Enum getType() const = 0;

public:

	virtual void accept( IObjectVisitor& _objectVisitor ) = 0;

};

} // namespace GameModel

#endif // __GAME_MODEL_IOBJECT_HPP__
